
package porownaniecen;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Set;
import javax.management.monitor.StringMonitor;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author lukasz
 */
public class PorownajCeny extends AbstractTableModel {
    private Connection connection;
    private LinkedList<Porownanie> lista;

    public PorownajCeny(Connection con,String nazwaProduktu,String nazwaKategorii){
        this.connection = con;
        this.lista = porownaj(nazwaProduktu, nazwaKategorii);
    }

    public LinkedList<Porownanie> porownaj(String nazwaProduktu,String nazwaKategorii){

        String query = "SELECT p.cena,s.nazwa FROM produkt p,sklep s,katprodukt kp"
                + " WHERE p.id_sklep=s.id_sklep and p.id_kat_produkt = kp.id_kat_produkt"
                + " and p.nazwa='"+nazwaProduktu+"' and kp.nazwa='"+nazwaKategorii+"'"
                + " ORDER BY p.cena DESC";
        Statement statement;
        ResultSet rs;
        LinkedList<Porownanie> lista = new LinkedList<Porownanie>();
        try{
           statement = connection.createStatement();
           rs = statement.executeQuery(query);

           while(rs.next()){
               Porownanie tmp = new Porownanie();
               tmp.setNazwa(rs.getString(2));
               tmp.setCena(rs.getDouble(1));

               lista.push(tmp);
           }

        }catch(SQLException e){
            System.err.println("Bład: "+e);
        }

        return lista;
    }

    @Override
    public String getColumnName(int column) {
        String nazwa="";
        switch(column){
            case 0: nazwa="Nazwa sklepu";
                    break;
            case 1: nazwa="Cena";
                    break;
        }
        return nazwa;
    }

    public Class getColumnClass(int column) {
        if (column >= 0 && column <= getColumnCount())
          return getValueAt(0, column).getClass();
        else
          return Object.class;
      }


    public int getRowCount() {
        return this.lista.size();
    }

    public int getColumnCount() {
        return 2;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        if(columnIndex==0){
            return this.lista.get(rowIndex).getNazwa();
        }else
            return this.lista.get(rowIndex).getCena();
    }
}
